package com.dys.testlistIterator07;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/**
 * @className: com.dys.testlistIterator07.ListIteratorTest
 * @description: com.dys.testlistIterator07
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/05 下午10:38
 */
public class ListIteratorTest {

    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) {
        new ListIteratorTest().testListIterator();
    }

    /**
     * 同时操作一个集合，会抛出并发修改异常
     */
    public void testIterator() {
        ArrayList<String> list = new ArrayList<String>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");
        Iterator<String> it = list.iterator();
        while (it.hasNext()) {
            if ("C".equals(it.next())) {
                list.add("FF");
            }
        }
        System.out.println(list);
    }

    /**
     * ListIterator迭代器: 迭代和添加都是它完成
     */
    public void testListIterator() {
        ArrayList<String> list = new ArrayList<String>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");
        list.add("E");
        ListIterator<String> it = list.listIterator();
        while (it.hasNext()) {
            if ("C".equals(it.next())) {
                it.add("FF");
            }
        }
        System.out.println(it.hasNext());
        System.out.println(it.hasPrevious());
        System.out.println(list);
        System.out.println("==============逆向遍历============");
        while (it.hasPrevious()) {
            System.out.println(it.previous());
        }
        System.out.println(it.hasNext());
        System.out.println(it.hasPrevious());
    }
}
